package br.com.sgh.conversores;

import br.com.sgh.dao.AcervoDAO;
import br.com.sgh.dao.EmprestimoDAO;
import br.com.sgh.entidade.Acervo;
import br.com.sgh.entidade.Emprestimo;
import br.com.sgh.util.FacesContextUtil;
import java.util.List;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;

@FacesConverter("disponibilidade")
public class VerificaDiponibilidadeAcervo implements Converter {

    private AcervoDAO acervoDAO() {
        AcervoDAO<Acervo> dao = new AcervoDAO<Acervo>(Acervo.class, FacesContextUtil.getRequestSession());
        return dao;
    }

    private EmprestimoDAO emprestimoDao() {
        EmprestimoDAO<Emprestimo> dao = new EmprestimoDAO<Emprestimo>(Emprestimo.class, FacesContextUtil.getRequestSession());
        return dao;
    }

    @Override
    public Object getAsObject(FacesContext fc, UIComponent uic, String string) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public String getAsString(FacesContext fc, UIComponent uic, Object value) {
        System.out.println(">>>>>>>>>>  Chamo o conversor");
        Integer codAcervo = (Integer) value;       
        List<Emprestimo> emprestimos = emprestimoDao().verificaDisponibilidadeAcervo(codAcervo);
        System.out.println("====== Total de Imprestimos === " + emprestimos.size());
        if (emprestimos.size() > 0) {
            System.out.println("Emprestimo "+emprestimos.get(0).getAcervo().getCodAcervo()+ " Devolução "+emprestimos.get(0).getDataDevolucao());
            return "Indiponivel";
        } else {
            return "Disponivel";
        }
    }
}
